package cn.qingyun.gis.modules.scenes.service;

import cn.qingyun.gis.common.Result;
import cn.qingyun.gis.modules.express.response.RoleInfoResponse;
import cn.qingyun.gis.modules.scenes.entity.OpticalModem;
import cn.qingyun.gis.modules.scenes.entity.PoiScenarioAppendix;
import cn.qingyun.gis.modules.scenes.request.*;
import cn.qingyun.gis.modules.scenes.response.*;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.TreeMap;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author guest
 * @since 2024-04-28
 */
public interface IPoiProofreadService {

    /**
     *
     * @param request
     * @return
     */
    IPage<PoiListResponse> poiQueryNew(PoiListRequest request);

    /**
     * poi列表查询接口
     * @param request
     * @return
     */
    IPage<PoiListResponse> poiQueryList(PoiListRequest request);

    /**
     * 根据id + type 返回未随访poi信息
     */
    UnFollowPoiDto noFollowQueryById(String id, String type);

    /**
     * 根据id + type + kwPhone 返回随访poi信息
     */
    TaskDetailResponse followQueryById(String id, String type);

    /**
     * 随访
     */
    String proofread(PoiKwRequest request);

    /**
     * 随访过程草稿记录
     * @param request
     * @return
     */
    DraftResponse draftProofreadSaveOrUpdate(PoiDraftRequest request);

    /**
     * 意向业务记录查询
     * @param request
     * @return
     */
    List<IntentionRecordResponse> selectIntentionRecord(IntentionInfoRequest request);

    /**
     * 上传minio图片
     */
    List<String> uploadPhoto(PhotoKwRequest request);

    /**
     * 上传minio图片
     * @param request
     * @return
     */
    List<PhotoAppendixResponse> uploadPhotoNew(PhotoKwRequest request);

    /**
     * 根据id删除照片
     * @param id
     */
    void deletePhotoById(String id);

    /**
     * 录音识别
     */
    SpeechTextGetResponse getSpeechText(UploadTextRequest request);

    /**
     * 删除录音
     */
    void deleteFile(AudioDeleteRequest request);

    /**
     * 语音识别
     */
    String getSpeech(MultipartFile file);

    /**
     * 首页数据展示（根据对角线经纬度）
     */
    List<IndexAroundResponse> indexQuery(IndexAroundRequest request);

    /**
     * 首页数据展示（根据对角线经纬度）改造
     * @param request
     * @return
     */
    List<IndexAroundResponse> indexNewQuery(IndexAroundNewRequest request);

    /**
     * 关键字查询---新接口
     * @param request
     * @return
     */
    List<PoiListResponse> poiQueryByWordNew(QueryByWordRequest request);

    /**
     * 关键字查询改造
     * @param request
     * @return
     */
    List<PoiListResponse> poiSearchByWord(QueryByWordRequest request);

    /**
     * 导出场景攻坚明细
     */
    void exportScenesExcel(String code);

    /**
     * 导出场景攻坚明细---改造
     * @param poiChannelRequest
     */
    void exportScenesExcelNew(PoiChannelRequest poiChannelRequest);

    /**
     * 根据id查询图片
     */
    List<String> showPhoto(String id,Integer type,String proofreadId);

    /**
     * app查看照片
     * @param id
     * @param proofreadId
     * @return
     */
    List<PhotoAppendixResponse> queryPhotoData(String id,String proofreadId);

    /**
     *
     * @param id
     * @return
     */
    List<String> queryPhoto(String id);

    /**
     * 根据网格编码等信息分页查询随访明细
     */
    IPage<ScenesPageDto> selectDetailPage(Integer pageNo, Integer pageSize, String code, String kwPhone, Integer kwState);

    /**
     * 后台页面--列表查询
     */
    IPage<ScenesPageDto> selectDetailPageNew(PoiSearchRequest poiSearchRequest);

    /**
     * 后台-----poi点位详情查询
     * @param poiInfoDetailRequest
     * @return
     */
    PoiInfoDetailResponse selectPoiInfoDetail(PoiInfoDetailRequest poiInfoDetailRequest);

    DefaultPermissionsResponse getDefaultData();

    /**
     * 根据手机号获取业务信息
     */
    BusResponse businessByPhone(String phone);

    /**
     * 判断当前工号，渠道编码 是否为直销/自有
     */
    Boolean checkPhone(String phone,String channelCode);

    /**
     * 根据工号进行网格区域权限判定--改造--新增角色返回字段
     * @param decryptedMap
     * @return
     */
    List<RoleInfoResponse> areaPermissionByNumNew(TreeMap<String, String> decryptedMap);

    /**
     * 查询直销人员权限
     * @param telNUm
     * @return
     */
    RoleInfoResponse selectRoleInfo(String telNUm);

    /**
     * 下载excel模板
     */
    void modelDownload(HttpServletResponse response);

    /**
     * 责任人导入前确认
     * @param file
     */
    Result<?> peopleExcelImportVerify(MultipartFile file);

    /**
     * 责任人导入
     * @param file
     */
    void peopleExcelImport(MultipartFile file);

    /**
     * 光猫扫描接口
     * @param devType
     * @param terminalNo
     * @return
     */
    OpticalModem scanOpticalModem(String devType,String terminalNo);

    /**
     * 查询app首页个数统计接口
     * @param poiCountRequest
     * @return
     */
    PoiCountResponse selectPoiCount(PoiCountRequest poiCountRequest);

    /**
     * 给网格通提供的个数统计接口
     * @param poiCountRequest
     * @return
     */
    PoiCountToWgtResponse selectPoiCountToWgt(PoiCountRequest poiCountRequest);

    /**
     * 具体类型头部信息统计
     * @param poiCountRequest
     * @return
     */
    PoiSpecificCountResponse selectSpecificPoiCount(PoiCountRequest poiCountRequest);

    /**
     * 建筑详情接口查询
     */
    TaskDetailResponse selectBuildDetailInfo(PoiDetailRequest request);
    /**
     * 入住企业列表查询接口
     * @param request
     * @return
     */
    IPage<PoiListResponse> poiSettledList(PoiPageRequest request);

    /**
     * 楼宇详情接口查询
     * @param request
     * @return
     */
    List<BuildingDetailResponse> buildingDetailQuery(BuildDetailRequest request);

    /**
     * 管理后台---导出excel配置的表头
     * @return
     */
    HashMap<String,String> exportExcelHeader();
    /**
     * poi数据勘误历史记录查询
     * @param id
     * @param type
     * @return
     */
    List<KwPeopleRecord> selectKwPeopleRecord(String id,String type);

    /**
     * app聚合
     * @param indexTogetherRequest
     * @return
     */
    List<TogetherResponse> selectIndexQueryTogetherData(IndexTogetherRequest indexTogetherRequest);
}
